package von.seiji.cn;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;

import java.io.IOException;
import java.net.UnknownHostException;

/**
 * @Package: von.seiji
 * @Date: 2019/7/21 13:31
 * @Author: 天泽圣司
 */
@SpringBootApplication//(exclude = DataSourceAutoConfiguration.class)
public class Seiji2utilApplication {
    public static void main(String[] args) throws IOException {
        SpringApplication.run(Seiji2utilApplication.class,args );
       // String programPath="E:\\Seiji926\\software\\Google\\Chrome\\Application\\chrome.exe";
        String url="http://localhost:9999/util";
      /*  ProcessBuilder processBuilder=new ProcessBuilder(programPath,url);
        processBuilder.start();*/
        try {
            String cmd = "rundll32 url.dll,FileProtocolHandler " + url;
            Runtime.getRuntime().exec(cmd);
        } catch (UnknownHostException e) {
            e.printStackTrace();
        }
    }

    /*
    * spring中Constructor、@Autowired、@PostConstruct的顺序：

其实从依赖注入的字面意思就可以知道，要将对象p注入到对象a，那么首先就必须得生成对象a和对象p，才能执行注入。所以，如果一个类A中有个成员变量p被@Autowried注解，那么@Autowired注入是发生在A的构造方法执行完之后的。

如果想在生成对象时完成某些初始化操作，而偏偏这些初始化操作又依赖于依赖注入，那么久无法在构造函数中实现。为此，可以使用@PostConstruct注解一个方法来完成初始化，@PostConstruct注解的方法将会在依赖注入完成后被自动调用。

加载顺序：Constructor >> @Autowired >> @PostConstruct
*
* 假如我的Controller所在的包不在不和启动类在一个包下呢？

我们需要在启动类（DemoApplication）加一个注解

@ComponentScan(basePackages = {"com.*"})
    * */
}
